package service

import (
	"ksd-social-api/utils"
	"math/rand"
	"strings"
	"time"
)

type BaseService struct {
}

var (
	NICKNAME_DATA = "锦时璃::青山锁::薄荷蓝::跟风走::遇晚星::梦旅人::风飞扬::眉间雪::愿相衬::安若汐::陌上花::凝残月::断秋风::龙吟凤::无眉缺::醉红颜::陌潇潇::莫阑珊::孔风雷::领青瓷::暮成雪::江满样::小悸动::几世寻::了无痕::月长歌::浅时光::北末染::青无锋::断莫离::醉晨色::梦里人::清衡子::君子棱::予星河::柚绿时::槑小猫::玉添花::漫山谷::邯郸道::挽木琴::梓心花::邢馨月::长歌行::撑青伞::北星缘::小米粒::小甜甜::临晚心::忆往昔::青柠檬::湘歌简::夜如影::尘世客::望北海::苏浅依::长青诗::凉堇雨::陌念念::程染筱::终不悔::画卿颜::世中仙::叮叮当::饮晚风::七里笙::枕边书::关启燕::梁子玉::苏九凉::解相思::温卷猫::明月归::避风港::陈茵沫::时空记::顾子兮::小酒窝::意容颜::桃米水::小白兔::槐不语::白衫辞::无线侠::恰梦中::怀中喵::沐卿月::千韵惘::小兔叽::吹羌笛::忆倾城::曾何时::箫外月::暮云深::蓝蝶恋::夏雪若::夜未央::跳跳羊::冷月魄::青衫隐"
	AVATAR_DATA   = "/avatar/default.png::/avatar/01.png::/avatar/02.png::/avatar/03.png::/avatar/04.png::/avatar/05.png::/avatar/06.png::/avatar/07.png::/avatar/08.png::/avatar/09.png::/avatar/10.png"
)

/**
 * 获取雪花算法的id
 * @author feige
 * @date 2023-11-22
 * @version 1.0
 * @desc
 */
func (service *BaseService) GetSnowWorkerId(workId int64) uint64 {
	worker, _ := utils.NewWorker(workId)
	return worker.NextNumId()
}

func (service *BaseService) GetSnowWorkerIdString(workId int64) string {
	worker, _ := utils.NewWorker(workId)
	return worker.NextId()
}

/**
 * 随机获取用户名
 * @author feige
 * @date 2024-01-15
 * @version 1.0
 * @desc
 */
func (web *BaseService) GetRandNickname() string {
	nicknameArr := strings.Split(NICKNAME_DATA, "::")
	// 设置随机种子，保证每次运行的结果不同
	rand.Seed(time.Now().UnixNano())
	// 生成随机索引
	index := rand.Intn(len(nicknameArr))
	// 通过随机索引获取数组中的元素
	element := nicknameArr[index]
	// 返回元素
	return element
}

/**
 * 随机获取头像
 * @author feige
 * @date 2024-01-15
 * @version 1.0
 * @desc
 */
func (web *BaseService) GetRandAvatar() string {
	avatarArr := strings.Split(AVATAR_DATA, "::")
	// 设置随机种子，保证每次运行的结果不同
	rand.Seed(time.Now().UnixNano())
	// 生成随机索引
	index := rand.Intn(len(avatarArr))
	// 通过随机索引获取数组中的元素
	element := avatarArr[index]
	// 返回元素
	return element
}

/**
 * 随机生成账号
 * @author feige
 * @date 2024-01-15
 * @version 1.0
 * @desc
 */
func (web *BaseService) GetRandAccout(n int) string {
	return utils.RandStr(n)
}
